﻿#define _CRT_SECURE_NO_WARNINGS 1
/*
实验四： 字符串和多维数组 实验
一．.实验目的
     巩固字符串和多维数组相关知识，学会运用灵活应用。
	 1.回顾字符串和多维数组的逻辑结构和存储操作特点，字符和数组的物理存储结构和常见操作。
	 2.学习运用字符串和和数组的知识来解决实际问题。
	 3.进一步巩固程序调试方法。
	 4.进一步巩固模板程序设计。

	 二．实验时间
	    准备时间为第9周到第10前半周，具体集中实验时间为10周周四。2个学时。

		三．.实验内容
		1.从键盘输入一些文本，统计文本单词的个数。
		2.写程序输出一个5阶幻方：每一行每一列每一个对角线和均相等。
		3.  自己设计一个字符加密算法，并设计程序验证：输入文本，解后加密并输出。在些基础上设计一个你算法的解密程序。
		    前两题是必做题，第3题是选做题。
*/
/*
//1.从键盘输入一些文本，统计文本单词的个数。
#include<stdio.h>
#define MAX 100
int main()
{
	system("color 0e");
	char s[MAX];
	printf("请输入英文文本：\n");
	gets(s);//gets允许输入空格
	char *p = s;
	int flag=0;//标记（空格：0；单词：1）注意刚开始flag要为0
	int num = 0;//计数
	for (; *p != '\0'; p++)
	{
		if (*p==' ')
		{
			flag = 0;
		}
		else//不为空格
		{
			if (flag == 0){ flag = 1; num++; }
		}
	}
	printf("这个文本中的单词有%d个。\n", num);
	system("pause");
	return 0;
}
*/
/*
//2.写程序输出一个5阶幻方：每一行每一列每一个对角线和均相等。
#include<stdio.h>
#define ROW 45//行
#define COL 45//列
int main()
{
	system("color 0e");
	int arr[ROW][COL] = {0};
	int n;
	printf("请输入方阵(奇数阶)的阶数:");
	scanf("%d", &n);
	if (n % 2 == 0){ printf("不为基数请重新输入!\n"); }
	else
	{
		//以位序计第一行到第n行（注意则遍历也要以位序计)
		arr[1][(n + 1) / 2] = 1;
		int i = 1,j = (n + 1) / 2;//刷新i,j值
		for (int k = 2; k <= n*n; k++)
		{
			//注意必须使用else if 好处：使得k值永远不重复
			if (i == 1 && j != n)
			{
				arr[n][j + 1] = k;
				i = n; j = j + 1;
			}
		    else if (i != 1 && j == n)
			{
				arr[i-1][1] = k;
				i = i - 1;
				j = 1;
			}
		    else if (i == 1 && j == n)
			{
				arr[i + 1][n] = k;
				i = i + 1;
				j = n;
			}
		    else if (i != 1&&j != n)
				{
				if (arr[i - 1][j + 1] == 0)
					{ 
						arr[i - 1][j + 1] = k; 
						i = i - 1;
						j = j + 1;
					}
				else 
					{
						arr[i + 1][j] = k;
						i = i + 1;
						j = j;
					}
				}
		}
	    //遍历
		printf("\n输出%d阶幻方：\n",n);
		for (int k = 1; k <= n; k++)
		{
			for (int m = 1; m <= n; m++)
			{
				printf("%d\t", arr[k][m]);
			}
			printf("\n\n\n\n");
		}
	}
	system("pause");
	return 0;
}*/